La voice.library: Il riconoscimento vocale...

di Stefano Aquino

Volete un Amiga più intelligente? Già da tempo è possibile riuscire ad ottenere con il nostro "piccolo computer" la comprensione di comandi vocali, grazie all'incredibile libreria che ci accingiamo ad analizzare.
Il riconoscimento e l'interpretazione della voce è forse uno dei sogni più ricorrenti fra i possessori di un elaboratore. Al di là degli aspetti prettamente tecnici, è facile rendersi conto come, in effetti, il riconoscimento di comandi vocali è un evento piuttosto complesso per un semplice "ammasso di ferraglia" privo di intelligenza: gli esseri umani, infatti, nella comprensione delle parole pronunciate da altre persone ricorrono ad una serie molto ampia di elementi per arrivare al senso del discorso: gesti, inflessioni della voce, movimenti del corpo, espressioni.
Questa capacità di analisi è un qualcosa di irrealizzabile in modo tanto ampio da un computer, essendo necessario entrare addirittura nel merito del pensiero espresso; ma, con qualche pretesa in meno, è possibile giungere al riconoscimento di un suono, suono che può essere evidentemente un verso, un rumore ma soprattutto... una parola!

Cosa ci serve
Innanzitutto dobbiamo riuscire a recuperare una versione, meglio se recente, della "Voice. Library" che è una libreria di funzioni scritta da Richard Horne e specificatamente orientata al riconoscimento vocale; mediante l'analisi della versione 6.6, datata Febbraio 1993, è nostra intenzione mostrare come chiunque sia interessato a dialogare, o quasi, con il suo Amiga possa autonomamente scrivere un semplicissimo programma che, sfruttando le potentissime procedure messe a disposizione dall'autore della "voice.library", gli permetta la tanto sperata "voice recognition".
Prima di far crescere l'entusiasmo, però, non possiamo non ricordare la necessità di essere in possesso di un digitalizzatore audio, indispensabile al fine di garantire al nostro computer le informazioni veramente minime per l'arduo compito da svolgere.
In ultimo, vogliamo sottolineare come certamente è possibile reperire versioni successive della libreria messe a punto dallo stesso autore, ma noi faremo riferimento alla versione del 1993 in quanto di essa siamo in possesso di una documentazione completa ed esauriente.

La "Voice.library"
Sfruttare una libreria già pronta è notevolmente più semplice che costruirsene una da sé ed anche se dovremo fare ricorso, per forza di cose, a qualche riga di Assembler, il nostro programma finale sarà sostanzialmente scritto in C e facilmente traducible in altri linguaggi.
Richiesta l'apertura della libreria con la classica "OpenLibrary" possiamo avere a disposizione le dodici interessantissime funzioni, di seguito analizzate, solo se la "Voice.library" è al suo posto nella directory "Libs:", se la porta parallela non è impegnata e se la libreria non è già in memoria utilizzata da qualche altro programma: attenzione, quindi, di ricordarsi di usare sempre la "CloseLibrary" a fine lavoro, pena la necessità del reboot per un riutilizzo della libreria stessa.
Ed iniziamo ora con le funzioni. Prima di tutto dobbiamo definire il tipo di digitalizzatore che vogliamo utilizzare nel nostro lavoro: nella versione 6.6 la funzione "PickSampler" prevede l'uso del "PerfectSound 3", del "SoundMaster" o di un sampler "Generic". Questo ci garantisce un settaggio interno dei parametri che, però, esclude ancora il "DSS8 della GVP", in quanto l'autore non è a conoscenza del modo in cui tale digitalizzatore è pilotabile dalla porta parallela. Quindi è il momento di scegliere quale dei due Timer utilizzare per le temporizzazioni in fase di digitalizzazione: la funzione "PickTimer" è addetta a risolvere quelle situazioni in cui può rendersi palese un conflitto con altre applicazioni, permettendo la scelta tra Timer A e Timer B. Fatto tutto ciò, Amiga deve imparare la "nostra lingua", ovvero deve essere istruita sulle parole che deve essere in grado di riconoscere. La funzione "Learn", a ciò deputata, è, insieme alla prossima che analizzeremo, il cuore della libreria: i parametri che si attende sono lo spazio di memoria per mantenere il vocabolario - che dovrà essere pari al numero delle parole da imparare moltiplicato per 304 - il testo della frase attesa, il numero di ordine all'interno del vocabolario della frase stessa ed, in ultimo, lo schermo e la posizione della finestra da cui effettuare l'apprendimento che si articola in 3 digitalizzazioni della stessa parola. Il risultato è una tabella in memoria, contenuta nello spazio da noi riservato al vocabolario, detta "mappa delle frequenze" in cui la funzione "Learn" memorizza le caratteristiche fondamentali della forma d'onda rappresentante quanto da noi detto. Tale mappa è composta da 72 long word più un header di 16 byte che contiene il testo associato, per un totale proprio di 304 bytes per ogni parola del vocabolario.
Questa è solo una parte dell'articolo estratta da il numero di 64 (Maggio 1995) di Enigma Amiga Run per ordinare l'arretrato chiamare il numero (02)38.01.00.30 dalle ore 10:00 alle ore 12:30



Tutto su Enigma Amiga Disk - About Enigma Amiga Disk
Notizie sulla redazione di EAR - On EAR's contributors
Enigma Amiga Run Web Page
Torna alla pagina principale - Main Page


Page by M.Iurillo. (C) Copyright 1995, GR Edizioni srl, all rights reserved